package com.tibco.as.spacebar.ui.handlers.space.browse;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
import com.tibco.as.spacebar.ui.SpaceBarPlugin;
import com.tibco.as.spacebar.ui.editor.SpaceEditorExport;
import com.tibco.as.spacebar.ui.editor.SpaceEditorInput;
import com.tibco.as.spacebar.ui.handlers.space.AbstractSpaceHandler;
import com.tibco.as.spacebar.ui.model.Space;
import com.tibco.as.spacebar.ui.navigator.MetaspaceNavigator;
import com.tibco.as.spacebar.ui.preferences.Preferences;
public abstract class AbstractBrowseHandler extends AbstractSpaceHandler {
@Override
protected void handle(ExecutionEvent event, Space space)
throws ExecutionException {
final IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event)
.getActivePage();
final MetaspaceNavigator navigator = (MetaspaceNavigator) page
.findView(SpaceBarPlugin.ID_METASPACES);
navigator.getCommonViewer().addSelectionChangedListener(
new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
page.activate(navigator);
}
});
SpaceEditorExport export = Preferences.getSpaceEditorExport(getTimeScope());
try {
openEditor(page, new SpaceEditorInput(space, export));
} catch (PartInitException e) {
throw new ExecutionException("Could not open space editor", e);
}
}
protected void openEditor(IWorkbenchPage page, SpaceEditorInput input)
throws PartInitException {
page.openEditor(input, input.getEditorId(), true);
}
protected abstract String getTimeScope();
}